package com.bjsxt.chapter17_templateMathod;

/**
 * @ClassName BankTemplateMethod
 * @Description 银行业务模板类
 * @Author 黑马程序员
 * @Date 19:19 2024/6/23
 * @Version 1.0
 **/
public abstract class BankTemplateMethod {

    public void takeNumber(){
        System.out.println("取号排队!");
    }

    // 办理具体的业务
    // 钩子方法
    public abstract void transact();

    public  void evaluate(){
        System.out.println("反馈评分");
    }

    /**
     * 模板方法，该模式的核心方法
     * 把基本操作组合到一起，子类一般不能重写
     */
    public final void process(){
        this.takeNumber();
        // 像个钩子，执行时挂哪个子类的方法就调用哪个
        this.transact();
        this.evaluate();
    }

}
